package maxReconstitution;

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int number = scanner.nextInt();
        long largestNumber = largestNumberFromDigits(number);
        System.out.println("由这些数字构成的最大数为：" + largestNumber);
    }

    public static long largestNumberFromDigits(int number) {
        // 将整数转换为数组，数组中的每个元素代表一个数字
        int[] digits = new int[10];
        int n = number;
        while (n > 0) {
            digits[n % 10]++; // 统计每个数字出现的次数
            n /= 10;
        }

        // 将数字按照从大到小的顺序拼接起来
        long result = 0;
        for (int i = 9; i >= 0; i--) {
            while (digits[i] > 0) {
                result = result * 10 + i; // 将数字加到结果中
                digits[i]--;
            }
        }
        return result;
    }
}
